home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / amok_lha / amok03.lha / DosSupport / Doc.textcraft (.txt) next >
IFF Formatted Text  |  1993-08-15  |  3KB  |  40 lines

  1. Wozu "DosSupport" ?
  2. Bei der Entwicklung des Amiga muß anscheinend Uneinigkeit geherrscht haben. Man könnte fast meinen, es laufen zwei Betriebssysteme in einer Maschine: AmigaDos (in BCPL) und Exec (in C). Da wohl die meisten Amiga-Programmierer in C oder von den Datentypen Ã¤hnlichen Sprachen (natürlich auch Modula-2) programmieren, ist es lästig, daß viele Parameter des Dos dem BCPL- und nicht dem Exec-Standard entsprechen. Dieses Modul stellt Prozeduren zur Konvertierung der Datentypen zur Verfügung.
  3.  
  4. Die Datentypen
  5. APTR/ADDRESS: Byteaddresse, d.h. eine Adresse wie sie direkt vom 68000-Prozessor verwendet wird.
  6.  
  7. BPTR: BCPL-Pointer bzw. Langwortadresse, also Byteadresse geteilt durch 4. D.h. alle Dos-Strukturen müssen an durch 4 teilbaren (Byte-)Adressen beginnen.
  8.  
  9. Exec/C-Strings: Zeiger (Byteadressen) auf Bytefolgen, die mit einer Null als Endekennzeichen abgeschlossen sind. Auch Modula-Strings sind mit einer Null abgeschlossen.
  10.  
  11. BSTR, Dos/BCPL-Strings: Zeiger (Langwortadressen) auf eine Folge von Bytes - das erste Byte enthält die Länge des Strings [0..255], danach folgt der eigentliche String (ohne Abschlußzeichen).
  12.  
  13. GetDevList
  14. Gibt einen Zeiger (Byteadresse) auf die Dos-DeviceList zurück. Dieser berechnet sich aus DosBase°.root°.info°.devInfo, wobei zu beachten ist, daß dieser Ausdruck direkt in Modula keinen Sinn gibt, da die Dos-Zeiger ja BPTRs sind. In der DeviceList sind alle gerade verfügbaren Volumes, Devices und assignierten Directories (logische Devices) aufgelistet. Vorsicht: die Verkettung (mit DeviceList.next) geschieht Ã¼ber BPTRs, nicht mit ExecNodes.
  15.  
  16. BPTRtoADR
  17. Wandelt einen BCPL-Pointer in eine in Modula verwendbare ADDRESS um.
  18.  
  19. ADRtoBPTR
  20. Wandelte eine ADDRESS in einen BCPL-Pointer. Vorsicht: die Adresse muss durch 4 teilbar sein (Longword-aligned), sonst bricht das Programm mit einer Fehlermeldung ab.
  21.  
  22. BSTRtoStr
  23. Kopiert einen BCPL-String in einen Modula-2-gerechten (ARRAY OF CHAR).
  24. Aus EinfachheitsgrÜnden wird der String selbst (VAR) und nicht ein Zeiger (so wie in C) Ã¼bergeben.
  25.  
  26. StrToBSTR
  27. Konvertiert einen Modula-2-String in einen BCPL-String, wobei allerdings nur die Bytefolge Ã¼bergeben wird, kein BSTR (BPTR auf BCPL-String). Den BSTR erhält man mit:
  28. StrToBSTR(String);
  29. MyBSTR:=ADRtoBPTR(ADR(String));
  30. Dies wurde so gewählt, weil sonst der String in einen eigenen Speicherbereich kopiert werden müßte, den DosSupport allozieren müßte.
  31.  
  32. Dos.def
  33. In diesem Verzeichnis befindet sich auch die Datei Dos.def, die bei neueren Versionen des M2Amiga-Compilers mitgeliefert wird. In den alten Handbüchern ist die Beschreibung des Dos-Moduls nicht ganz korrekt. Es wird dort nicht zwischen ADDRESS und BPTR unterschieden, was bei Nichtbeachtung das Programm nach Indien schickt (Guru oder "Modula Unterbruch", meist Address Error). Auch sind die meisten Dos-Prozeduren (z.B. Examine) nicht vom Typ BOOLEAN sondern vom Typ LONGINT.
  34.  
  35. DosBase
  36. Zusätzlich wird von DosSupport die Variable DosBase exportiert, die sonst von Modula nur schwer erreichbar ist. Sie darf gelesen, aber niemals verändert werden.Dokumentation zu "DosSupport" Version 1.0Seite 
  37. Autor: Nicolas Benezan, Postwiesenstr.2, 7000 Stuttgart 60
  38. Nützliche Dos-Prozeduren in Modula
  39.  
  40.